home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
tutor
/
dosimp2d.arj
/
SIMPLYD1.HYP
< prev
next >
Wrap
Text File
|
1993-12-09
|
67KB
|
1,021 lines
|Tby Kari M. Jackson and Sansaska Systems|T
DDDDDD OOOO SSSS
DD DD OO OO SS SS
DD DD OO OO SS
DD DD OO OO SS
DD DD OO OO SSS
DD DD OO OO SS
DD DD OO OO SS
DD DD OO OO SS SS
DDDDDD OOOO SSSS
|T(Disk) (Operating) (System)|T
Simply Said,
Simply Done,
Demonstration SIMPLY EASY!
Version 2.0 (c)1991-1993
|T<page down> for Main Menu|T
Main Menu
-=|sInstructions|s=- -=|sWhat Is DOS?|s=-
DOS Commands
φ |nAPPEND|n COMMENT » |nDIR|n |nEXIT|n GWBASIC
φ ASSIGN COMP DISKCOMP EXPAND HELP
ATTRIB COPY DISKCOPY * FASTHELP IF
» |nBACKUP|n COUNTRY DO|1S φ |nFASTOPEN|n * INCLUDE
φ |nBREAK|n φ CTTY » |nDOSKEY|n FC INSTALL
|nBUFFERS|n DATE |nDOSSHELL|n FCBS * INSTALLHIGH
CALL * DBLSPACE DOSSWAP φ FDISK * INTERLNK
CD φ DEBUG DRIVPARM FILES * INTERSVR
CHCP * |nDEFRAG|n ECHO FIND φ JOIN
CHDIR DEL EDIT FOR KEYB
» |nCHKDSK|n DELOLDOS EDLIN φ FORMAT LABEL
* CHOICE * DELTREE EMM386 GOTO |nLASTDRIVE|n
CLS DEVICE ERASE GRAFTABL LH
COMMAND DEVICEHIGH EXE2BIN |nGRAPHICS|n LOADFIX
<page down> for more commands and subjects
LOADHIGH MSHERC REN STACKS
MD * MWAV RENAME * SUBMENU
|nMEM|n * MWAVTSR REPLACE φ SUBST
* |nMEMMAKER|n * MWBACKUP |nRESTORE|n SWITCHAR
* MENUCOLOR * MWUNDEL RMDIR SWITCHES
* MENUDEFAULT NLSFUNC SELECT SYS
* MENUITEM * NUMLOCK SET |nTIME|n
» |nMIRROR|n » |nPATH|n SETVER TREE
MKDIR PAUSE |nSHARE|n TRUENAME
|nMODE|n * POWER » SHELL » TYPE
» MORE |nPRINT|n SHIFT UNDELETE
* |nMOUSE|n |nPROMPT|n * SIZER φ UNFORMAT
* MOVE QBASIC * SMARTDRV VER
* MSAV RD * SMARTMON » |nVERIFY|n
* MSBACKUP φ RECOVER SORT VOL
* MSCDEX REM * SPATCH * VSAFE
* |nMSD|n » XCOPY
<page down> for more subjects
φ ". and .." BBS » COMSPEC
» *.* BIOS CON
|n286|n |nBoot|n φ Concatenation
|n386|n » |nBoot|n Disk * CONFIG
|n8088|n Bytes » |nCONFIG.SYS|n
A: C: Conventional
Abort, Retry, Fail, Ignore |nCache|n COUNTRY.SYS
Access Denied Checksum |nCPU|n
ANSI.SYS * CHKLIST.MS Current
Archive * CHKSTATE.SYS |nDefault|n
ASCII CLOCK$ Demo
» Attributes Cluster |nDevice Driver|n
» |nAUTOEXEC.BAT|n » CMOS Devices
AUX Code Page DIRCMD
» Bad Command or Filename COM1 » Directory
Bad Sector » COMMAND.COM Disk Full
» |nBatch|n |nCommercial|n » Disks
<page down> for more subjects
DISPLAY.SYS Filter IO.SYS
DOSHELP.HLP |nFloppy|n Kernel
* |nDOSSHELL|n |nFragmented|n |nKeyboard|n
Downloading Freeware |nKEYBOARD|n.SYS
DRIVER.SYS Handles LIM
» Editing Keys Hidden Logical Drives
EGA.SYS Hig|1h LPT1
EMS HIMEM.SYS Macros
» Environment HMA » Memory
ERRORLEVEL IBMBIO.COM MSDOS.SYS
» Executable IBMDOS.COM Non System Disk
EXIST Incorrect DOS Version NOT
Expanded Insufficient Disk Space NUL
Extended Internal |nOptimizer|n
External |nInterrupt|n Overlay
» |nFAT|n Invalid COMMAND.COM Packed File Corrupt
File Creation Error Invalid Drive Specification » |nParameters|n
<page down> for more subjects
Parent Replaceable |nSwitch|n
Partition Reserved » TEMP
Piping ROM Track 0 Bad
POST Root φ TSR
PRINTER.SYS Sector UMB
PRN Sector Not Found Upper
|nPublic Domain|n Setup |nVDISK.SYS|n
Queue Shadow Virtual Disk
RAM |nShareware|n Volume
φ |nRAMdisk|n φ |nShelling Out|n Wildcards
|nRAMDRIVE.SYS|n Slack Space * WINPMT
|nReboot|n |nSMARTDRV.SYS|n » Write-Protect
φ Redirection |nSpooler|n XMS
-=!!=-=!!=-=!!=-=!!=-=!!=-=!!=-=!!=-
= -=About This Program=- =
! -=DOS 6.0's New Features=- !
= -=|sTrademarks|s=- =
-=!!=-=!!=-=!!=-=!!=-=!!=-=!!=-=!!=-
|TInstructions|T for Navigating This Book
In this Demonstration version, the only words that are highlighted on the
menu are the ones that are defined here. In the full version, all of the
words on the menu are highlighted because they're all defined in the full
version.
Other than that, the Demonstration version works just about the same way
as the full version.
To order the full version for US $29.95, call (510) 676-2268 or write to:
Sansaska Systems
Derek Gitelson
3311 Concord Blvd.
Concord, CA 94519 or look for it in your
local software store or your favorite mail order catalog.
<page down> for more Instructions
Words on the menu that have » next to them are very useful subjects that
you should learn about as soon as possible. Words with the φ symbol next
to them can be very dangerous, so you should read about them before you
get yourself into trouble by using them. (Forewarned is forearmed.) And
words on the menu with * next to them are new to DOS 6.0.
Computer-related words in the text are highlighted. These are called
"hotspots". Each hotspot has a "target" which is the part of the text
that explains that word. If you run into a word in the text that you
don't understand, all you have to do is put your cursor on that hotspot
and hit the <Enter> key to get to the target and read about it. If you
run across another word you don't understand, put your cursor on it and
hit <Enter> to go read about that second word. When you're done learning
about the second word, hold down a <Ctrl> key and hit <Enter> to return
to where you left off in reading about the first word. Hit <Ctrl-Enter>
again to return to where you were before you hit <Enter> the first time.
Just jump around, using <Enter> to look up a word, and <Ctrl-Enter> to
return to where you were before you did that. This "book" is not meant
to be read from "cover to cover", since its chapters are not in any logi-
<page down> for more Instructions
cal order. The first thing you should learn about is |nDirectory|n Struc-
ture. So <PageUp> to the third page of the Main Menu, put your cursor on
|nDirectory|n, hit <Enter>, and read about that. Where you go from there is
totally up to you. And here are the keystrokes you use to get around:
<PageUp> and <PageDown> Scroll through the text page by page.
<Arrow> Select a different hotspot on the same page.
<Letter> Move to a hotspot that starts with that letter.
<Enter> Move to the target of the selected hotspot.
<Ctrl-Enter> Return to where you were before you hit <Enter>.
<Ctrl-Home> Return to the Title Page, where you'll be just
a <PageDown> key away from the Main Menu.
<Esc> Exit from the book.
<Ctrl-/> Exit from the book, and if you're using the Hyp-
ertext reader in TSR mode, it remembers the spot
you were in. So if you enter the book again be-
fore |sreboot|sing, it'll start out in that spot in-
stead of at the Title Page.
<page down> for |nTrademarks|n
|TTrademarks|T
All words used in this book that we know to be |ntrademarks|n are listed be-
low. All other possible trademark names are appropriately capitalized.
We cannot guarantee the accuracy of this information, but we've done our
best to make it so. Please let us know if there's anything incorrect.
American Megatrends International AMI
Biologic HRAM
Central Point Software PC Tools
Chips & Technologies NEAT
Intel 8088, 80|s286|s, 80|s386|s
International Business Machines IBM, PC
Key Software Products The Last Byte
Lotus, Intel, Microsoft EMS, LIM
The above plus AST Research XMS
Microsoft MS-DOS, Windows
Phoenix Technologies Phoenix
Qualitas 386Max
Quarterdeck Office Systems Manifest, QEMM, QRAM, VIDRAM
Reidar Gresseth & Chris Hook EXPLOSIV
TurboPower Software MARK, RELEASE
|tMemory|t and Related Topics
First of all, |nmemory|n has nothing to do with disk space. Some people
might call disk space "memory" but that is misleading and very confusing.
The two aren't related at all. Disk space is where the computer stores
things that it's not using at the moment. Like a file cabinet. |nMemory|n
is |TRAM|T (Random Access Memory) chips that plug into the motherboard, and
this is where the computer keeps programs that are actually running at
the moment and the data those programs are using. Like your desktop.
The size of your desk and the size of your filing cabinets are not at all
related. If you get an "Out of memory" error, don't be thinking that
deleting files from your hard drive is going to help that. What you need
to do is remove some of the |sTSR|ss and |sdevice driver|ss that you're using.
The way to do that is to edit your CONFIG.SYS and AUTOEXEC.BAT files and
remove the commands that start some TSRs and device drivers. Then reboot
your computer. Or just reboot from a clean boo|1t disk.
Besides whatever programs you're working on and whatever device drivers
and TSRs your CONFIG.SYS and AUTOEXEC.BAT files loaded for you, the com-
<page down> for more Memory
puter's |nmemory|n also contains the main parts of DOS at all times. With-
out DOS in |nmemory|n, the computer is every bit as stupid as your electric
stapler. No, in fact, more stupid than that because the stapler knows
how to staple. The computer doesn't know how to do anything unless DOS
is there telling it. This part of DOS that stays in |nmemory|n all the time
is called the DOS "|tkernel|t". Now all the software companies know that the
DOS |nkernel|n has to be in |nmemory|n, and even a couple of |sdevice driver|ss and
|sTSR|ss too. So when they write on the package that a certain program needs
512K or 640K in order to run, they mean you need to have that much |nmemory|n
installed, not that you need to have that much available. By the way, to
find out how much you have available at any particular time, look at the
last line of the CHKDSK command's output. Or if you have DOS version 4
or later, use the MEM command.
|nMemory|n is volatile. That means it evaporates easily. Ok, it's not the
|nmemory|n that's volatile; it's the stuff that's in |nmemory|n that's volatile.
The second you turn off the computer, or reboot, or the power goes out,
everything that was in |nmemory|n is gone. And you can't get it back. So
save your work to disk often. For example, as I'm writing this with my
<page down> for more Memory
word processor, the only place my words exist is in the computer's mem-
ory. So if my electric company hiccupped, I'd have to start this chapter
all over again. Well my word processor has this real handy F2 keystroke
that means "save to disk under original filename". So I hit my F2 key
every couple sentences. That writes my work to disk where it won't get
lost even if my electricity goes out altogether. Of course, your word
processor doesn't necessarily use the F2 key for saving. Find out what
keystroke works to save data to disk in your word processor, and do it
often while you're writing! The same goes for your spreadsheet, data-
base, paint program, and whatever other programs you use.
|tBytes|t are units of measurement for |nmemory|n. A byte is just basically one
character of data. "A" is a byte, "b" is a byte, "7" is a byte, "+" is a
byte, etc. A bit is one eighth of a byte, and a nybble is one half byte,
but it's not too often that you'll need to know those. Mostly you only
need to know multiples of |nbytes|n, not fractions of them. A Kilobyte, Kb,
or K is 1024 |nbytes|n. The abbreviation Kilo usually means 1000, but compu-
ters use the binary numbering system so 1024 is what Kilo means when you
talk computers. A Megabyte, Meg, Mb, or M is 1024 Kilobytes or 1,048,576
<page down> for more Memory
bytes. And a Gigabyte is 1024 Megabytes, or 1,073,741,824 bytes.
There are lots of different classifications of |nmemory|n. The most impor-
tant is the lowest 640K, which is called |tConventional|t |nmemory|n. That's the
kind that DOS knows how to run programs in, and that's right, 640K of it
is all there is! Well the designers of the first PC thought that was a
good idea at the time. See, back then 64K was a perfectly respectable
amount of |nmemory|n for a computer to have. Honest, you could run a whole
lot of programs in that little bit of |nmemory|n. (You still could, except
that programmers are writing these big fat programs with fancy graphics
and other memory-wasting features.) All right, so we started out with
the IBM PC which didn't physically have the ability to address more than
one meg of different |nmemory|n locations, and the designers had to set aside
some portion of that |nmemory|n space to use for the |nmemory|n on the graphics
card, and the BIOS, and all that. So they decided that 384K of the one
meg had to be |treserved|t for those things, and the other 640K could be used
as main program |nmemory|n. And there wasn't anything wrong with that, be-
cause remember computers back then didn't need any more than one tenth of
that!
<page down> for more Memory
Well nowadays we need more than that, but we don't get it. Because IBM
and Microsoft are committed to continued support of the people who are
still using those IBM PCs, XTs, and other computers that use the 8088 CPU
chip which can't address more than one meg of |nmemory|n locations. DOS is
never going to lose the 640K barrier as long as there are 8088 machines
still being used.
So, what do we do about that if we want to keep using DOS? Well the
first workaround was the |tExpanded|t |nMemory|n Specification, which is called
|TEMS|T for short. This scheme was invented so that machines with the 8088
CPU could use more than 640K of |nmemory|n. Well remember the 8088 can not
talk to more than 1,048,576 different bytes of |nmemory|n. But that's ok,
because remember that space between the 640K and 1024K addresses? You
know, the part that's reserved for the video card, the BIOS, and all
that? Not all of that gets used up by those things for which it is re-
served. Some of it is left empty. So they invented |nexpanded|n |nmemory|n.
There's a piece of hardware on an |nexpanded|n |nmemory|n board that knows how to
dynamically remap |nmemory|n locations into different |nmemory|n addresses. Well
first it needs a certain piece of software loaded into |nmemory|n, called an
<page down> for more Memory
Expanded |nMemory|n Manager (EMM), that controls a certain 64K chunk of that
reserved space. This 64K chunk is called a Page Frame. Now the EMM can
use that expanded |nmemory|n board's address remapping ability to |nswitch|n
different chunks of expanded |nmemory|n in and out of that page frame. See,
DOS can access any |nmemory|n address below one meg. DOS normally ignores
everything above 640K because the rest is reserved, but the EMM tells DOS
that it's ok to look for data in the page frame. So the EMM keeps track
of where the data is on the expanded |nmemory|n board, and when DOS asks for
a certain piece of data, the EMM remaps that piece of |nmemory|n into the
page frame where DOS can see it, and then the next time DOS asks for some
other piece of data from the expanded |nmemory|n board, the EMM puts what's
in the page frame back onto the expanded |nmemory|n board and gets the piece
DOS wants and puts it in the page frame instead. It's just switching
banks of |nmemory|n locations into and out of a small number of |nmemory|n add-
resses (so EMS is also called "bank switching"). As you can imagine,
this goes a lot slower than normal conventional |nmemory|n access, but it is
better than not having any way at all to access more than 640K of |nmemory|n.
(|sEMS|s is also called |TLIM|T [Lotus-Intel-Microsoft] |nmemory|n, and if you want
to buy an expanded |nmemory|n board, then make real sure that it's completely
<page down> for more Memory
hardware-compatible with version 4 of the LIM EMS specification since a
lot of programs won't be able to use it if it's not.)
But then came the 80286 processor. This one has the ability to access 16
mega|sbytes|s worth of |nmemory|n addresses. So a new scheme had to be developed
to access all those addresses! This one was called |teXtended|t |nMemory|n Spec-
ification (|TXMS|T). (Who came up with these names, huh?) Now there is a
problem with this. The 286 processor can run in two modes. One's called
Real Mode and that's the only one DOS can run in. But in real mode there
is no way to access anything above the one meg address. The other mode
is called Protected Mode, and in that mode the computer can address a
virtually unlimited amount of |nmemory|n. But DOS can't run when the compu-
ter is in protected mode. So you've got to have a thing called an |nXMS|n
manager, which is a device driver in the same way that the EMM is. This
thing controls the processor's switching back and forth between real mode
and protected mode, so that |nextended|n |nmemory|n can be accessed.
Well you can see that with all this switching of |nmemory|n locations and
switching of processor modes, there's just about no way that a program
<page down> for more Memory
can run in either expanded or extended |nmemory|n. But there are quite a few
types of programs that can store and access the data they're working on
in those types of |nmemory|n. But these programs have to be specially de-
signed to know how to do that. There's no way to get a program to use
expanded or extended |nmemory|n for its data storage unless it was written
specifically to be able to use it.
Besides just applications like some spreadsheets and databases, there are
other things that very commonly know how to use that additional |nmemory|n.
DOS even comes with a couple of them. A RAMdisk can do it. So can a
disk cache. DOS comes with |sRAMDRIVE.SYS|s/|sVDISK.SYS|s and SMARTDRV.SYS for
those purposes. Print spoolers can also do it, but DOS doesn't come with
one of those (except for the PRINT command which is a spooler that can
only use conventional memory). Most RAMdisks, disk caches, and print
spoolers can even use extended |nmemory|n without your loading any XMS mana-
ger! They have their own built right in. Isn't that convenient?
DOS versions 4 and 5 also come with |tHIMEM.SYS|t--an XMS manager, and an EMM
called |TEMM386|T. As its name implies, |nEMM386|n can only run on 386 or higher
<page down> for more Memory
computers. You see, a 386 doesn't need an expanded |nmemory|n board in order
to have expanded |nmemory|n. The 386 processor has memory-address-remapping
capabilities built right into it. So all it needs is the EMM (manager)
in order to treat some of its extended |nmemory|n as expanded |nmemory|n. This
is called EMS emulation. This is not to be confused with EMS simulation.
Simulation is done on 286 machines that don't have expanded |nmemory|n boards
but it doesn't work nearly as well as real expanded |nmemory|n does. The 286
just doesn't have the ability to treat extended |nmemory|n as if it were ex-
panded. An EMS simulator will try. It puts the page frame into conven-
tional |nmemory|n instead of the reserved |nmemory|n area, and it's slow, and it
can't even be used by some of the types of software that require expanded
|nmemory|n. But if your application can use it, and if you have the conven-
tional |nmemory|n to spare to use for the page frame, it's better than not
having expanded |nmemory|n at all, if you need expanded |nmemory|n.
So, how do you remember the difference between the words "expanded" and
"extended"? They're identical except for the middle syllable, but it's
not really so difficult. The word expanded conjures up the image of
something that has gone from being narrow to being wide. Well, with
<page down> for more Memory
expanded |nmemory|n, DOS is looking through a narrow page frame at a wide
chunk of |nmemory|n. The word extended refers to something going from short
to long. And with extended |nmemory|n, you take the short list of |nmemory|n
addresses that the computer can access, just one meg, and you make it a
long list of addresses, up to sixteen megs or even more. You could say
that description of extended could also apply to expanded, but it doesn't
because expanded |nmemory|n doesn't have any addresses. (Except the 64K bank
of |nmemory|n that's currently sitting in the page frame. It has addresses
for the moment, but only until DOS wants data from one of the other banks
of expanded |nmemory|n and the EMM swaps it back out to the unaddressed ex-
panded |nmemory|n and swaps the requested bank into the page frame.)
There are a lot more programs written to be able to access expanded mem-
ory than there are of programs that can use extended. Because it's been
around longer, so programmers have already learned real well how to write
for it. And also because software companies like to be compatible with
as many kinds of computers as possible to sell as many copies as possible
so they have to use expanded instead of extended so that their programs
will run on machines that are still using the 8088 processor. But when-
<page down> for more Memory
ever you have a choice of which kind to use, go with extended if at all
possible because it's much more efficient!
One thing an awful lot of people don't understand is that even though ex-
tended |nmemory|n can't exist at any address lower than 1024K, that does not
mean that a computer with only one meg of |nmemory|n can't have any extended
|nmemory|n. It doesn't mean that at all! Remember, the addresses between
640K and 1024K are reserved for all that BIOS and video and stuff. So
motherboard |nmemory|n can't go there. If you have one meg of |nmemory|n on your
motherboard, then the part above the first 640K has to go into addresses
above 1024K since it can't go into the reserved area. So one meg of mem-
ory means 640K of conventional |nmemory|n at addresses 0K-1024K and 384K of
|nmemory|n at addresses 1024K-1408K. That means 384K of extended |nmemory|n.
The addresses between 640K and 1024K are reserved for use by those other
things. There is no |nmemory|n there. |nMemory|n can only go below the 640K
address or above the 1024K address. Just because there is 384K worth of
addresses between 640K and 1024K does not mean there is |nmemory|n there, any
more than a house that has an address necessarily has a family living
there! So many people, experts, and books tell other people that the top
<page down> for more Memory
384K of their one meg of |nmemory|n is reserved and they can't use it for
anything, and that is not true! There is no reserved |nmemory|n. Only re-
served addresses. A one meg machine has 384K of usable extended |nmemory|n.
Well those are the main types of |nmemory|n but we're not done with this les-
son yet. Not at all. For one thing, there are exceptions to some of the
rules I've given so far. It actually is possible to get more than 640K
of conventional |nmemory|n, even up to 736K. But only on some machines, and
only if you give up your graphics capability. Remember how there is all
that unused space in the reserved |nmemory|n area? The only reason it can't
be used as conventional |nmemory|n is because it is not "contiguous", or in a
row, with the conventional |nmemory|n. The lowest addresses in the reserved
|nmemory|n area are used by the graphics parts of the |nmemory|n on your video
card. So that is between the conventional |nmemory|n and the empty parts.
Since the empty parts are separated from the conventional |nmemory|n, they
can't be part of conventional |nmemory|n. But check this out! The graphics
|nmemory|n is contiguous with the conventional |nmemory|n. If it weren't being
used for graphics, it could be used for conventional memory! Well that's
just the idea behind programs such as Quarterdeck's VIDRAM. It disables
<page down> for more Memory
the graphics and convinces DOS to use that portion of the reserved area.
Absolutely amazing. But of course you can't run any graphics programs
while you're using VIDRAM. Only plain old text programs like word proc-
essors. But just imagine being able to have over 700K of conventional
memory! You could have lots of |sTSR|ss loaded and still be able to run some
really large programs. The trouble with that is that most of the pro-
grams that want large amounts of |nmemory|n are the programs that need to use
that graphics |nmemory|n for graphics.
So, besides disabling graphics to add it to the conventional |nmemory|n, and
using 64K of it for an expanded |nmemory|n page frame, how else can you take
advantage of the fact that the reserved |nmemory|n area is not all used up by
the things that are supposed to use it? Well if you have the right hard-
ware and the right software, you can run your TSRs and |sdevice driver|ss up
there which frees up all the space they would otherwise be using up in
your precious conventional |nmemory|n. What's the right hardware? A 386, or
a 286 with a LIM 4.0 expanded |nmemory|n board, or a 286 with a very special
chipset such as the Chips & Technologies NEAT chipset or just about any
one that has Shadow RAM capability. (We'll get to Shadow RAM in a bit.)
<page down> for more Memory
All of these pieces of hardware have the ability to remap |nmemory|n from one
location to another. So they can take some expanded or extended |nmemory|n
and convince the computer that it's actually located in those unused add-
resses in the reserved |nmemory|n area. So now you have |nmemory|n that is not
in conventional addresses, but is still in addresses that DOS knows how
to communicate with. And you can load things into those addresses. What
is the software that you need in order to make the computer do that add-
ress remapping? For a 286 there's Quarterdeck's QRAM, a couple of other
commercial ones, and even two shareware ones that I know of, called The
Last Byte and HRAM. For a 386 or higher computer, there's Quarterdeck's
QEMM, Qualitas's 386Max, and even DOS 5.0's EMM386. DOS 5 didn't include
one for 286s because there are so few 286s that have the memory-remapping
ability, whereas all 386s have it.
By the way, once there is some |nmemory|n remapped into those empty reserved
|nmemory|n addresses, it's not called "reserved" anymore. Now it's known as
|tUpper|t |nMemory|n Blocks. Some software companies even call it high |nmemory|n,
but I don't like to do that, because it's too easy to confuse that term
with the HMA. (|TUMB|T is the abbreviation for |nUpper|n |nMemory|n Blocks.)
<page down> for more Memory
What is this "|TBIOS|T" thing that part of the reserved |nmemory|n is reserved
for? It stands for Basic Input/Output System. This is the |ninstructions|n
in the ROM of the computer that tell it how to communicate with the peri-
pherals such as the drives, the keyboard, the comm ports, etc. DOS talks
to the |nBIOS|n real often, because each computer is a little different from
every other computer, so DOS couldn't possibly know how to communicate
with every type of hardware. So the |nBIOS|n is like the translator between
DOS and the hardware. AMI and Phoenix are both very popular brands of
|nBIOS|n, and each different motherboard design has its own version.
Well, considering how often DOS has to access the |nBIOS|n, and considering
that it's in |TROM|T (Read-Only Memory) which is non-volatile and is very
slow, wouldn't it be nice to have it in fast RAM instead of slow ROM?
Well, that's what |tShadow|t RAM is all about. Computers that can do |nShadow|n
RAM copy the data from |nROM|n into some extended |nmemory|n, and remap that ex-
tended |nmemory|n into the reserved addresses through which a computer would
normally access the |nROM|n. So now you have your |nROM|n |nBIOS|n routines in nice
fast RAM instead. The problem is, this is eating up what would otherwise
be extended |nmemory|n. Some computers only do it for the addresses that are
<page down> for more Memory
used by ROM chips, but others disable an entire 384K of extended |nmemory|n
while they're at it. And some computers allow Shadow RAM to be disabled,
so that your extended |nmemory|n becomes extended again. But others don't.
So if you've only got one meg of RAM, then it's possible that Shadow RAM
ability is depriving you of extended |nmemory|n altogether. Well, nothing in
life is free. You want fast BIOS routines, but sometimes you have to
give something up in order to get it.
Ok, here comes another exception to the rules. I said that there's no
way that DOS can access anything above the one meg address. Well that's
true, DOS can't access any block of |nmemory|n whose starting location is
above the one meg address. But that doesn't say anything about the end-
ing location of a |nmemory|n block. On a 286 or higher computer that has ex-
tended |nmemory|n, there's a little trick of the A20 address line that allows
DOS to access a 64K chunk of |nmemory|n that begins 16 bytes below the one
meg address. So that means that 65,520 bytes of that |nmemory|n block is
above the one meg address, but DOS can access it because DOS names |nmemory|n
blocks by their starting address, not their ending address. This little
64K chunk of space is called the |tHig|1h|t |nMemory|n Area, which is abbreviated
<page down> for more Memory
as |tHMA|t. It's not conventional |nmemory|n, because it's not contiguous with
the bottom 640K of |nmemory|n. But some programs know how to use it almost
as if it were conventional memory! This is one of the best things about
DOS version 5. It actually knows how to run while part of it is in the
HMA! You have to load the HIMEM.SYS device driver which is an XMS manag-
er and |nHMA|n manager, and then give the command |sDO|1S|s=|sHIG|1H|s in your CONFIG.SYS
file, and magically the DOS kernel and the BUFFERS will load into the |nHMA|n
instead of into conventional memory! This frees up about 45K of your
precious conventional |nmemory|n, or even 64K of it if you were using a lot
of BUFFERS. Also the latest versions of Microsoft's MOUSE driver can go
into the |nHMA|n. But when one program is using the |nHMA|n nothing else can use
it. Even if there is room left up there. Nothing can go there except
things that the controlling program allows. The DOS kernel allows the
BUFFERS and the MOUSE driver, but nothing else. Any leftover |nHMA|n space
just goes to waste.
<page down> for DOS 5.0 (and later) |nMemory|n Management
DOS 5.0 (and later) |nMemory|n Management
If you don't have a 286 or higher computer with some extended memory,
then don't even read this chapter. It will only make you jealous of the
people who do have the right hardware to be able to do this stuff.
The first thing you want to do is load the HIMEM.SYS device driver via
your CONFIG.SYS file, by putting the line |sDEVIC|1E|s=C:\DOS\HIMEM.SYS at the
beginning of that file. HIMEM.SYS is an XMS manager and HMA (|sHig|1h|s Memory
Area) enabler. It gives you access to both of those types of memory.
Then add the line |TDO|1S|T=HIGH anywhere in the CONFIG.SYS file, and DOS 5.0
will load its kernel and the BUFFERS into the HMA instead of leaving them
to take up your precious conventional memory space.
Since the HIMEM.SYS device driver converts all of your extended memory to
XMS memory (which just means extended memory that's being managed by an
eXtended Memory Specification driver which is what HIMEM.SYS is), if you
have any programs that can use extended memory but can't use the XMS
<page down> for more DO|1S 5.0 (and later) |nMemory|n
method of accessing it, then you need to tell HIMEM.SYS to leave you some
plain old extended memory instead of managing all of it and turning it
into XMS memory. That's easy to do. Just add the parameter /INT15=####
to the end of your |sDEVIC|1E|s=HIMEM.SYS command. The symbol #### stands for
however many Kilo|sbytes|s of extended memory you want to keep as extended
instead of having it converted to XMS, plus 64K. For example if you want
to keep 256K of extended memory, then you would use /INT15=320 because
256 + 64 = 320, so that will leave you with 256K of extended memory, and
the rest will still be converted to XMS memory and HMA and all that.
If you have a 286, that's it, you're done. If you have a 386, there's
lots more, so read on!
First, change DOS=|sHIG|1H|s to DOS=HIGH,UMB which tells DOS to use the Upper
Memory Blocks that EMM386 is going to create. And right after the HIMEM
.SYS line, you want to install EMM386. If you just want EMM386 to create
some Upper memory blocks in the empty reserved memory addresses between
640K and 1024K, then use this line:
DEVICE=C:\DOS\EMM386.EXE NOEMS
<page down> for more DO|1S 5.0 (and later) |nMemory|n
The NOEMS parameter tells EMM386 NOt to create any EMS (expanded) memory.
So it will just remap some extended memory into those empty reserved add-
resses, so that it becomes Upper memory.
If you want EMM386 to create Upper memory and also emulate some expanded
memory, then you use this line instead:
|sDEVIC|1E|s=C:\DOS\EMM386.EXE #### |nRAM|n
The |nRAM|n parameter tells EMM386 to create Upper memory and also emulate
some expanded memory. That means take some extended memory and convince
the computer that it's really expanded memory instead. The #### symbol
there is the spot where you tell it how much EMS to create. The default
is 256 so if you want just 256K of expanded memory, then you can leave
that out. If you want, say, a meg of EMS, then put 1024 there where I
put ####. Now understand that emulating EMS means you'll have 64K less
Upper memory than you would have if you didn't. Because expanded memory
requires 64K of empty address space with no memory in it, to use as the
page frame. So those 64K of addresses will not be available for EMM386
to create Upper memory in. So don't use the |nRAM|n parameter unless you
have an application that really does want some expanded memory.
<page down> for more DO|1S 5.0 (and later) |nMemory|n
(If for some reason you want to have emulated expanded memory without
creating any Upper memory, then load EMM386 without either of the NOEMS
or |nRAM|n parameters. And if for some reason you want to have Upper memory
support without loading the DOS kernel hig|1h, then use DOS=UMB instead of
DOS=HIGH,UMB.)
All right, now you've got Upper memory in what used to be empty reserved
memory addresses. And you've used DOS=UMB to tell DOS to be prepared to
use that Upper memory. So what do you do with it? You load your TSRs
and |sdevice driver|ss into it! So that they no longer take up any space in
your conventional memory! For your device drivers, you just use the com-
mand |tDEVICEHIGH|t instead of the DEVIC|1E command you would normally use, and
make sure it comes after the commands that load HIMEM and EMM386 or else
it won't work because there is not yet any Upper memory to |nDEVICEHIGH|n in-
to. For your TSRs, you insert the word |tLOADHIGH|t (or the abbreviation |tLH|t)
at the front of the command that loads the TSR into memory. For example,
if you usually load a screen-saver with the command EXPLOSIV M2 then you
would change that to |nLOADHIGH|n EXPLOSIV M2 or |nLH|n EXPLOSIV M2 so the screen
saver will go into Upper memory instead of conventional.
<page down> for more DO|1S 5.0 (and later) |nMemory|n
If you run out of Upper memory so that DOS can't load the specified de-
vice or TSR there, it will still load it, but into conventional memory,
just as if you had used the DEVIC|1E command or left out the LH instead.
Now there are TSRs and |sdevice driver|ss that just won't run from Upper mem-
ory at all. No matter what. And there are others that would run there
if only you could get them up there. Some of them give a MEM command
reading like as if they were small enough to fit into a free UMB, and yet
they will load into conventional RAM instead of loading high, as if there
was not enough memory free in the UMB. A lot of times, all this means is
that there's not enough memory up there for it to load, not that there's
not enough for it to run. What? Well you see, many drivers and TSRs re-
quire a whole bunch of memory while they're loading, but then as soon as
they're loaded, they settle down and only take up their normal amount of
memory. If you've got one of these, all you have to do is put its com-
mand earlier in the CONFIG.SYS or AUTOEXEC.BAT file, so that it loads be-
fore something else, so that at that time, there is a larger UMB open.
Then it can load, and it will settle down to its normal small size, so
that there will still be room for the one that you put the misbehaving
<page down> for more DO|1S 5.0 (and later) |nMemory|n
one in front of. So with DEVICEHIGH and LOADHIGH, loading order of |sTSR|ss
and |sdevice driver|ss matters even more than it used to before DOS 5.0.
DOS 5.0's EMM386 device driver/command has a lot of switches and paramet-
ers but you'll probably never need them, except the i switch. The "i" is
for "include" and it lets you include extra Upper memory addresses. You
see, DOS only remaps extended memory to certain Upper memory addresses it
knows are available on just about every type of computer. Almost any
computer has more available Upper memory addresses than those. It's just
that DOS doesn't bother to look and see what's available, unless you tell
it. So if you can decipher the output of the MEM /D command, or if you
have a program such as Quarterdeck's Manifest or DOS 6.0's MSD which can
tell you which addresses are not being used you can use EMM386's i switch
to tell it to create usable Upper memory blocks in those addresses too!
Then you can LOADHIGH a whole bunch more TSRs and device drivers! For
example, here's the command I use in my CONFIG.SYS file:
|sDEVIC|1E|s=C:\DOS\EMM386.EXE i=b000-b7ff i=c800-efff NOEMS
Because Manifest tells me that the addresses B000-B7FF and C800-EFFF are
unused on my computer. These addresses work for a lot of people. But if
<page down> for more DO|1S 5.0 (and later) |nMemory|n
you want to try those, you make real sure to have a good bootable DOS 5.0
floppy disk handy before you add those i |sswitch|ses to your EMM386 command!
Because if those memory addresses are not available on your computer then
putting those switches in there could very well lock up your computer.
You won't be able to reboot either, because every time you try, the com-
puter will read the same line in the same CONFIG.SYS file and just lock
up again! You'll need to be able to boot from a floppy disk and edit the
CONFIG.SYS file to remove those i switches again. Of course if you have
DOS 6.0, you can always hit the <F8> key to bypass the CONFIG.SYS file.
If your system does not have an |nextended|n BIOS data area, and you have a
monochrome or color graphics adapter, EMM386 can probably do the same
thing for you as what Quarterdeck's VIDRAM would--give you over 700K of
conventional memory! Use i=A000-B7FF for a color adapter or i=A000-AFFF
for monochrome. That will cause EMM386 to map memory into those address-
es, and since they're contiguous with the top of the conventional memory
(if you don't have an |nextended|n BIOS data area, that is), they will be
used as conventional memory! But of course you can't run any programs
that use any graphics. And unlike VIDRAM, you have to reboot in order to
<page down> for more DO|1S 5.0 (and later) |nMemory|n
do this or undo it. But if you have a program that doesn't use graphics
and needs more memory than you can give it, this is a good trick to know!
Now there's one problem with having all the free conventional memory that
DOS 5.0 and 6.0 can give you! There used to be a very popular program
for creating other programs, which had a bug in it. Programs created by
that program can't run in the bottom 64K of memory addresses. That never
used to matter, because the DOS kernel was always taking up those addres-
ses so programs couldn't possibly attempt to run there anyway. But with
DOS 5.0 and later, you can have most of the bottom 64K of addresses free!
Those old programs won't run anymore in that case! Common results are
the "|tPacked file corrupt|t" or "CRC error" messages, or just not running at
all. What should you do about it? Either load a couple of |sTSR|ss low to
fill up those lowest 64K of addresses, or else reboot the computer from a
floppy disk that doesn't have DOS=|sHIG|1H|s in its CONFIG.SYS file. Or use
the new command created for just this purpose. Its name is |tLOADFIX|t.
Say you have a program named HELLO.EXE which gives you that "Packed file
corrupt" message when you try to run it. Well all you have to do is in-
<page down> for more DO|1S 5.0 (and later) |nMemory|n
stead of typing HELLO to run that program, just type LOADFIX HELLO. Then
LOADFIX will load the HELLO.EXE program into addresses above the bottom
64K, and run it there. Then it'll work just fine.
Now if you have a 386 computer, with DOS 5.0, you should be able to get
about 616K of free conventional memory. The only things that should be
loaded low are parts of MSDOS, HIMEM, EMM386, and COMMAN|1D. Hopefully you
will be able to get everything else into the Upper memory blocks.
If you have a TSR that allows you to use commands to modify its behavior
after it's loaded, and you used LOADHIGH to load it, you may have to use
LOADHIGH to get the modifying commands to work also! For example, I have
a screen-saver named EXPLOSIV and it allows commands such as EXPLOSIV OFF
to temporarily disable it, EXPLOSIV ON to re-enable it, etc. Well when I
have it LOADHIGHed, those commands don't work. Because when I use the
OFF parameter to try to disable it, EXPLOSIV loads into conventional mem-
ory and looks around to find the copy of it that's already loaded to try
to disable itself, and it finds that it's not already loaded, so how can
it disable itself? It is already loaded, but it can't tell that, because
<page down> for more DO|1S 5.0 (and later) |nMemory|n
it is only looking for itself in conventional, not Upper memory. So the
command LOADHIGH EXPLOSIV OFF works, because with that command, EXPLOSIV
loads into Upper memory to look for the already-loaded copy of itself and
turn it off. It works just fine that way. It seems strange to use the
LOADHIGH command to disable a TSR, but in some cases that's what has to
be done. So if you have a TSR that lets you disable it, or unload it, or
modify it in some way, and it doesn't work when the TSR is LOADHIGHed,
try using the LOADHIGH command like that, and it just might work for you.
Be sure to use the versions of HIMEM.SYS, EMM386.EXE, RAMDRIVE.SYS, and
SMARTDRV.SYS that came with the most recent Microsoft product you have.
If you have Windows 3.0, use DOS 5.0's copy of those files. If you have
Windows 3.1, use its instead, unless you have DOS 6.0, in which case you
need to use those. The directory name in your |sDEVIC|1E|s=C:\DIRNAME\WHATEVER
command in the CONFIG.SYS file determines which version of those device
drivers you're using (except for Windows 3.1's and DOS 6.0's SMARTDRV.EXE
where that's determined by the directory name in your SMARTDR|1V command in
the AUTOEXEC.BAT file).
<page down> for more DO|1S 5.0 (and later) |nMemory|n
Now, what's new in DOS 6.0? First, both HIMEM.SYS and EMM386.EXE have
been changed so that they don't put so many messages on your screen dur-
ing |sboot|sup. You can add a /V (for Verbose) switch to the end of either
of those commands in your CONFIG.SYS file, to make them show their status
messages like they did in DOS 5.0, if you want to. Or if you want to see
those messages just once, hit your Alt key during bootup, and they'll be
verbose for you just this time.
HIMEM.SYS might need an /EISA switch in order to see more than 16 mega-
bytes of memory on a machine with an EISA bus.
|nEMM386|n.EXE now loads part of itself into Upper memory instead of leaving
such a large chunk in conventional memory. If for some reason you don't
want it to do that, use the NOHI switch on its DEVIC|1E command in your
CONFIG.SYS file.
|nEMM386|n.EXE in DOS 6.0 has quite a few impressive new abilities, at least
in comparison to DOS 5.0's version. Now instead of forcing you to tell
it exactly how much expanded memory you want it to emulate, and not being
<page down> for more DO|1S 5.0 (and later) |nMemory|n
able to change that amount without editing your CONFIG.SYS file and re-
|sboot|sing, the new EMM386 will pretty much give your applications however
much expanded memory they want, whenever they ask for some! Then when an
application is done using the expanded memory, it turns back into extend-
ed (well, XMS actually) memory again so that programs that want that kind
of memory can still have some!
If you don't use the NOEMS parameter on the |sDEVIC|1E|s=EMM386.EXE command,
then you're going to get expanded memory. How much? Well if you don't
tell it how much you want, then you start out with 256K and applications
can have as much as the entire amount of your XMS memory if they ask for
it. If you want to limit it to two mega|sbytes|s though, for example, then
you add 2048 (because two megabytes is 2048 kilobytes) to the end of the
EMM386 command in CONFIG.SYS. To change the original 256K amount you use
the MIN= parameter. For example, MIN=0 means don't create any expanded
memory at first. MIN=1024 means start out with one meg. Etc.
Let's say you have 8M of memory installed in your system, and that your
BIOS uses 384K for Shadow RAM. Subtract your 640K of conventional memory
<page down> for more DO|1S 5.0 (and later) |nMemory|n
and you're left with 7M of extended memory. You use DOS=|sHIG|1H|s,UMB in your
CONFIG.SYS so the DOS kernel is using the 64K HMA. Then EMM386 takes a
bunch of XMS memory for its own housekeeping and even more to remap into
the reserved memory addresses to create Upper memory. Now you have maybe
6816K of XMS memory left. So let's say you used this CONFIG.SYS command:
DEVICE=C:\DOS\EMM386.EXE |nRAM|n 4096 MIN=512
When |nEMM386|n.EXE loads, right away it reserves 512K of XMS memory for use
as expanded memory. So now you have 6304K of XMS and 512K of EMS. Next
perhaps you run a program that needs one meg of expanded memory. You on-
ly have 512K, but that's all right. DOS 6.0's EMM386 can create new ex-
panded memory automatically, on the fly, any time an application wants
some--as long as you have that much available XMS memory! So as soon as
the program asks for a meg of expanded memory, EMM386 creates 512K more
expanded memory. Now you have 6252K of XMS available, and 1024K of EMS.
When you exit that program, the extra 512K of expanded memory that was
created becomes XMS memory again, since nothing is using it. So again,
you have 6304K of XMS and 512K of EMS. Next let's say you run a program
that wants five megs of EMS memory. No can do. In your DEVIC|1E command
you told EMM386 not to ever create more than a total of 4096K of expanded
<page down> for more DO|1S 5.0 (and later) |nMemory|n
memory! If you needed more than that, you'd have to edit your CONFIG.SYS
file and reboot the computer. If you want to allow all of your XMS mem-
ory to be converted to EMS, then don't put any number in that command
where 4096 is in the above example. If you do use a number there, it can
be anywhere from 64 to 32768, and it must be a multiple of 16 or DOS will
just round it down to the nearest multiple of 16. If you want to ensure
that you will always have a certain amount of XMS memory that EMM386 will
leave alone, you can use EMM386's l switch. For example l=1024 will make
EMM386 always ignore one megabyte of XMS memory. Using l=1024 would have
the same effect as using 5792 in place of 4096 in the above example. Ei-
ther way, EMM386 could never give an application more than 5792K of EMS.
If your system stops responding to the <Ctrl-Alt-Del> keystroke combina-
tion after you start using DOS 6.0's EMM386, add the parameter ALTBOOT to
the end of your EMM386 command in the CONFIG.SYS file.
If you don't want to be bothered with learning how to load your |sTSR|ss and
|sdevice driver|ss into Upper memory manually, DOS 6.0 has the MEMMAKER com-
mand just for you!
<page down> for What Is a TSR?
What Is a |tTSR|t?
|nTSR|n stands for Terminate-and-Stay-Resident. Another name for |nTSR|n is Mem-
ory-Resident-Program. That means any program that you load into memory
once, and it stays there, at your beck and call, or just hanging around
in the background watching every move you make, until such time as you
reboot the computer.
DOS itself can be thought of as a |nTSR|n, except that TSRs are usually op-
tional, and DOS is not. If you don't have DOS resident in memory then
your computer ain't going nowhere! Device drivers are also TSRs in a
way, but just a special type of |nTSR|n.
If you have a MOUSE or trackball, and you load its driver via AUTOEXEC
.BAT rather than CONFIG.SYS, then it is not a device driver exactly but
it still is a |nTSR|n, most definitely. It hangs around in the background
watching you, and whenever you move your mouse it springs into action and
moves the mouse pointer around on your screen.
<page down> for more TSR
Automatic screen-savers that blank your screen after a certain number of
minutes of keyboard inactivity are TSRs. Anything you can "hotkey" into
with a little keystroke combination like <Ctrl-Esc> or <Alt-F1> is also a
|nTSR|n. There are lots of little phone book and appointment scheduler TSRs.
And here are some of the TSRs that come free with DOS: APPEND, DOSKEY,
DOSSHELL, FASTOPEN, GRAPHICS, MIRROR, MODE, PRINT, and SHARE. Except for
DOSSHELL and MIRROR, once you execute those commands, the |nTSR|n stays in
memory until you reboot. Some TSRs have commands that remove them from
memory, but not most of the ones that come with DOS! Although there is a
great public domain utility called MARK-and-RELEASE (and some others that
work in the same manner) that you can use to make it possible to remove
just about any |nTSR|n from memory without rebooting.
Of course it's not possible to remove one |nTSR|n if there has been any other
|nTSR|n loaded into memory after it. The only thing you can remove from mem-
ory is the most recent thing you put into memory. Strangely enough, this
includes batch files. If you issue a command to remove a |nTSR|n from mem-
ory from within a batch file, that |nTSR|n won't drop out of memory until the
<page down> for more TSR
batch file ends. Because although a batch file isn't actually loaded in-
to memory while it is executed, there is some batch-file-handling data
that does take up a speck of memory while the batch file is running. So
the batch file that gives the command to unload the |nTSR|n might cause the
|nTSR|n to be disabled and not work anymore, but the memory that the |nTSR|n was
using won't be freed up for other uses until that batch file exits to the
DOS prompt and the memory used by the batch-handling data is deallocated.
You mustn't ever try to load or unload a |nTSR|n from within another program,
such as when you're Shelling Out from your word processor or something.
You have to exit to the primary command processor before you can do any
messing around with memory allocations, or you'll probably lock up the
whole computer and be forced to reboot, losing whatever data you had en-
tered into your application since the last time you saved it to disk.
TSRs eat memory. They eat it for breakfast, lunch, and dinner. If you
have any "Out of memory" errors, the first thing you want to do is make
sure you're not using any TSRs or |sdevice driver|ss in your CONFIG.SYS and
AUTOEXEC.BAT files, except necessary ones. (See also LOADHIGH.) The DOS
<page down> for more TSR
version 4 installation program puts a whole bunch of worthless things
like APPEND, FASTOPEN, GRAPHICS, and PRINT into those files. Get rid of
them, unless you have read what they're about and still think you need
them. (In fact, if you have DOS 4, check out every command in those
files because there are other useless ones like |sLASTDRIVE|s=E and VERIFY
OFF which are |sdefault|ss, and |sBREAK|s=ON which slows your computer down.
These don't take up any memory, but they're still worthless and should be
removed. I have a feeling that whoever wrote the install program for DOS
4 hadn't read their DOS manual yet.)
If you have DOS version 4 or later, you can use the MEM command to find
out what TSRs you have loaded. Otherwise, look and see what kinds of
commands you have in your CONFIG.SYS and AUTOEXEC.BAT files. The DOS
commands you can look up right here to see if they're TSRs, and the non-
DOS commands you will have to check the documentation that came with each
program. Now you know what TSRs get loaded from your AUTOEXEC.BAT file,
and then there could also be others that you've loaded since your AUTO-
EXEC.BAT file was run at |sboot|sup. For example, let's say you don't use
the PRINT command in your AUTOEXEC.BAT file because you don't need it
<page down> for more TSR
that often. But the PRINT command is still a |nTSR|n every time you do use
it, regardless of whether your AUTOEXEC.BAT or your fingers typed in the
command.
Another thing that a lot of new computer users don't realize is that the
DOSSHELL and most other menu programs are TSRs. There are some menus
that drop most of the way out of memory when you launch a program through
them. But most of them, including the DOSSHELL, stay right there in your
memory, in the way of your programs that you're trying to run. Isn't
that dumb? You have to exit out of the DOSSHELL or menu program in order
to have enough memory to run a program, so what good does it do to have
the menu, right? Just to remind you of what programs you could run? You
can get that from the DIR command!
Even worse than that, many menu programs allow Shelling Out to DOS, but
they don't tell you that you're supposed to type EXIT to get back in. So
instead, you type the command that starts the menu. Know what you just
did? You just loaded a second copy of the menu program on top of the
first copy that was already there! Now you're really wasting memory! Be
<page down> for more TSR
careful with menu programs. They can really cause all sorts of problems.
But if you know what Shelling Out is about, you can avoid those problems.
There are lots of occasions when you need to absolutely and without a
doubt boot up without any TSRs whatsoever. For example, when you're in-
stalling a new software package you just bought, or every time you are
about to run a disk optimizer to take care of all your fragmented files.
The easiest way to do that is to reboot from a boo|1t disk that was for-
matted with the /S switch, and that doesn't have any AUTOEXEC.BAT or CON-
FIG.SYS files on it. You can put those files on your boo|1t disk, but only
if the CONFIG.SYS file doesn't contain anything except your hard disk's
device driver if your hard disk needs one, and only if the AUTOEXEC.BAT
file doesn't contain anything but PATH and PROMPT and C|1:. Now you have a
boo|1t disk that is safe to use whenever you're going to |sdefrag|sment your
hard drive or install some new software or BACKUP or RESTORE files or run
a disk diagnostics program like PCTools Diskfix or even CHKDSK with the
/F switch. This is necessary because really bad things can happen if you
have any TSRs in memory while you perform such operations. Especially
the disk optimizer. It's going to move all your files to different parts
<page down> for more TSR
of the disk. Well if there's anything in memory like a disk cache, or
FASTOPEN, or anything that keeps track of where the data is on the disk,
well, when the optimizer moves everything around, then those TSRs are go-
ing to have the wrong info, and they are going to trash your entire FAT.
Or if you have any |nTSR|n that gets activated at a certain time, or after a
certain delay, and it comes to life just as the optimizer is writing to
the FAT, whoa, look out! And then to really be on the safe side, you
should reboot the computer again the very second the optimizer finishes!
That will remove everything from memory and let the TSRs read the changed
information from the disk again, in case you had forgotten to remove any
of them from memory beforehand.
If you have DOS version 6.0, then you don't need a boo|1t disk in order to
boot clean like that. Just hit the <F5> key during bootup when DOS says
"Starting MS-DOS...", and it'll bypass your CONFIG.SYS and AUTOEXEC.BAT
files completely, as if you were booting from a disk that didn't have
those files on it.
TSRs work by trapping a certain interrupt. For example, a pop-up sched-
<page down> for more TSR
uler might sit there waiting for you to press the <Alt-S> keystroke. Now
if you have another |nTSR|n that grabs the interrupt for that keystroke also,
or if the application you're working on uses that keystroke, then you've
got a |nTSR|n conflict. There are a whole lot of ways that one |nTSR|n can con-
flict with another, or with a program. So whenever you start using a |nTSR|n
that you've never used before, watch out for problems, and if any occur,
it's probably the fault of your new |nTSR|n. There ain't no such thing as a
free lunch, you know, so along with the convenience of pop-up schedulers
and other highly useful TSRs, you've got to expect some problems too.
Most TSRs work just fine all by themselves, but when you go using more
than one at a time, there could be trouble. I've been lucky, and only
had problems with two or three TSRs in my life, but I know people who've
had major problems with lots of them. It just depends on what sort of
system you have, what other TSRs you use, and what applications you run.
It also depends a lot on what order you have the different TSRs installed
in your AUTOEXEC.BAT file. If TSR-A doesn't work right when it's loaded
before TSR-B, then |nswitch|n those AUTOEXEC.BAT lines around to load TSR-A
after TSR-B instead, and it might work just fine, believe it or not!
<page down> for more TSR
Many TSRs (and a lot of games too) take over the system clock a bit more
selfishly than they ought to, and end up ruining the time and/or date
that DOS thinks it is. If you find that you have such a program, you
want to remember to reset the time every now and then, so that the time
in your directory listings stays close to correct. To keep yourself from
forgetting to do that, just run the program from a batch file which does
the TIME command after exiting from that program.
That's the end of this Demonstration version of "DOS, Simply Said, Simply
Done, Simply Easy!" See Instructions to find out how to order the full
version.
Sorry, but these subjects aren't defined in this Demonstration version of
"DOS, Simply Said, Simply Done, Simply Easy!" Press <Ctrl-Enter> to re-
turn to where you were, or see Instructions to find out how to order the
full version.
|T286|T |TCPU|T |TGRAPHICS|T |tpublic domain|t
|T386|T |TC|1:|T |tinterrupt|t |tRAMdisk|t
|T8088|T |tdefault|t |tKeyboard|t |tRAMDRIVE.SYS|t
|TAPPEND|T |tDEFRAG|t |TLASTDRIVE|T |tReboot|t
|tAUTOEXEC.BAT|t |tDevice Driver|t |TMEMMAKER|T |TRESTORE|T
|TBACKUP|T |TDEVIC|1E|T |TMEM|T |tShareware|t
|tBatch|t |tDirectory|t |TMIRROR|T |TSHARE|T
|tBoot|t |TDIR|T |TMODE|T |tShelling Out|t
|tBoo|1t Disk|t |TDOSKEY|T |TMOUSE|T |tSMARTDRV.SYS|t
|TBREAK|T |TDOSSHELL|T |TMSD|T |TSMARTDR|1V|T
|TBUFFERS|T |TEXIT|T |toptimizer|t |tspooler|t
|tCache|t |TFASTOPEN|T |tParameters|t |tswitch|t
|TCHKDSK|T |TFAT|T |tPATH|t |TTIME|T
|TCOMMAN|1D|T |tfloppy|t |TPRINT|T |tVDISK.SYS|t
|tcommercial|t |tfragmented|t |tPROMPT|t |TVERIFY|T
|tCONFIG.SYS|t |TWhat Is DOS?|T